package com.iwhalecloud.citybrain.flow.platform.manager.application.service;

/**
 * @author lilh
 * @date 2019-03-05 14:18
 */
public interface ThirdPlatformCallbackResolver {

    /**
     * 根据流程定义id获取回调url
     *
     * @param processDefId 流程定义id
     * @return 回调url
     */
    String resolveCallbackUrl(String processDefId);

    /**
     * 根据流程实例id获取回调url
     *
     * @param processInstanceId 流程实例id
     * @return 回调url
     */
    String resolveCallbackUrlByProcessInstanceId(String processInstanceId);


    /**
     * 根据模型id解析
     *
     * @param modelId 模型id
     * @return url
     */
    String resolveUrlByModelId(String modelId);


    /**
     * 根据应用Id获取查询候选组的url
     *
     * @param appId 应用id
     * @return 查询候选组的url
     */
    String resolveCandidateGroupUrl(Integer appId);


    /**
     * 根据应用code和类型获取url
     *
     * @param appCode 应用code
     * @param type    类型
     * @return
     */
    String resolveUrl(String appCode, String type);


    enum Type {
        /**
         * 回调类型
         */
        CALL_BACK("CALL_BACK", "回调"),

        /**
         * 角色查询
         */
        ROLE_QUERY("ROLE_QUERY", "角色查询");

        private String code;

        private String desc;

        Type(String code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        public String getCode() {
            return code;
        }

        public void setCode(String code) {
            this.code = code;
        }

        public String getDesc() {
            return desc;
        }

        public void setDesc(String desc) {
            this.desc = desc;
        }
    }
}
